﻿using System;
using System.Collections.Generic;
using FluentNHibernate.Conventions;
using NHibernate.Criterion;

namespace Business.Entity.Contabil.Pessoa.SubClass.Usuario
{
    public class UsuarioRepository : RepositoryBase<Usuario>
    {
        public static Usuario GetUsuario(string login)
        {
            Usuario u = null;
            try
            {
                u = GetSession().CreateCriteria<Usuario>()
                .Add(Restrictions.Where<Usuario>(usuario => usuario.Login == login))
                .UniqueResult<Usuario>();
            }
            catch (Exception)
            {
                return null;
            }
            return u;
        }
        public static IList<Usuario> GetByCpfCnpj(String cpfCnpj)
        {
            Pessoa pessoa = null;
            var list = GetQueryOver().JoinAlias(fornecedor => fornecedor.Pessoa, () => pessoa)
                .Where(() => pessoa.CpfCnpj == cpfCnpj).List();
            return list;
        }

        public static Usuario GetUniqueByCpfCnpj(string cpfCnpj)
        {
            var list = GetByCpfCnpj(cpfCnpj);
            if (list.IsEmpty())
            {
                return null;
            }
            else
            {
                return list[0];
            }
        }
    }
}
